package com.aterrizar.dominio.reservacion.asientos;

import com.aterrizar.dominio.reservacion.asientos.categoria.CategoriaDeAsiento;
import com.aterrizar.dominio.reservacion.asientos.estado.EstadoDeAsiento;
import com.aterrizar.dominio.reservacion.viajes.Tramo;
import com.aterrizar.dominio.usuarios.Usuario;

public class Asiento {
	
	private int id;
	
	private Tramo tramo;
	private EstadoDeAsiento estado;
	private CategoriaDeAsiento categoria;
	private Usuario reservadoPor;
	private Double precio;
	
	public int getId() {
		return id;
	}

	@SuppressWarnings("unused")
	private void setId(int id) {
		this.id = id;
	}

	public Tramo getTramo() {
		return tramo;
	}
	
	public void setTramo(Tramo tramo) {
		this.tramo = tramo;
	}

	public EstadoDeAsiento getEstado() {
		return estado;
	}
	
	public void setEstado(EstadoDeAsiento estado) {
		this.estado = estado;
	}

	public CategoriaDeAsiento getCategoria() {
		return categoria;
	}
	
	public void setCategoria(CategoriaDeAsiento categoria) {
		this.categoria = categoria;
	}

	public Usuario getReservadoPor() {
		return reservadoPor;
	}

	public void setReservadoPor(Usuario reservadoPor) {
		this.reservadoPor = reservadoPor;
	}

	////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////
	
	public Asiento() {
		super();
		this.estado = EstadoDeAsiento.LIBRE;
		//this.categoria = CategoriaDeAsiento.TURISTA;
	}
	
	////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////
	public Asiento(CategoriaDeAsiento categoria,Tramo tramo){
		this.estado = EstadoDeAsiento.LIBRE;
		this.categoria = categoria;
		this.tramo = tramo;
		this.precio = this.categoria.calcularPrecioDeTramo(this.tramo);
	}
	
	
	public boolean estaReservado() {
		return this.getEstado().estaReservado();
	}

	public void reservar(Usuario usuario) {
		this.setEstado(EstadoDeAsiento.OCUPADO);
		this.setReservadoPor(usuario);
	}

	public Double getPrecio() {
		return precio;
	}

	public void setPrecio(Double precio) {
		this.precio = precio;
	}
	
}
